package com.situ;

import java.beans.Transient;

import java.util.Scanner;

import javax.annotation.processing.ProcessingEnvironment;
import javax.swing.text.StyledEditorKit.ForegroundAction;

import org.junit.Test;
import org.omg.CORBA.PUBLIC_MEMBER;

public class zuoye {       
	
	
	
	
	
	@Test										//数组的个数循环300次
	public void test(){
		int a = 0;
		int[] scre={0,0,1,2,3,5,4,5,2,8,7,6,9,5,4,8,3,1,0,2,4,8,7,9,5,2,1,2,3,9};
		for(int j = 0;j <= 9;j++){					//数字1-9循环9遍；
			for(int i = 0;i < scre.length;i++){
				if (scre[i] == j) {               //小循环，当数组内的数=大循环的某个数时，就+1；
					a = a + 1;					//300次
				}
			}
			System.out.println(j+"出现了"+  a + "次" + "\t");
			a = 0;
		}
	}
	@Test						//数组的个数第二种解法，循环30次
	public void test9(){
		int[] scre={0,0,1,2,3,5,4,5,2,8,7,6,9,5,4,8,3,1,0,2,4,8,7,9,5,2,1,2,3,9};
		int[] ch = new int[10];
		for (int i = 0; i < scre.length; i++) {
			switch (scre[i]) {
			case 0:
				ch[0]++;
				break;
			case 1:
				ch[1]++;
				break;
			case 2:
				ch[2]++;
				break;
			case 3:
				ch[3]++;
				break;
			case 4:
				ch[4]++;
				break;
			case 5:
				ch[5]++;
				break;
			case 6:
				ch[6]++;
				break;
			case 7:
				ch[7]++;
				break;
			case 8:
				ch[8]++;
				break;
			case 9:
				ch[9]++;
				break;
			default:
				System.out.println("错误");
				break;
			}
		}
		System.out.println("0的个数出现了：" + ch[0] + "次");
		System.out.println("1的个数出现了：" + ch[1] + "次");
		System.out.println("2的个数出现了：" + ch[2] + "次");
		System.out.println("3的个数出现了：" + ch[3] + "次");
		System.out.println("4的个数出现了：" + ch[4] + "次");
		System.out.println("5的个数出现了：" + ch[5] + "次");
		System.out.println("6的个数出现了：" + ch[6] + "次");
		System.out.println("7的个数出现了：" + ch[7] + "次");
		System.out.println("8的个数出现了：" + ch[8] + "次");
		System.out.println("9的个数出现了：" + ch[9] + "次");
	}
	
	
	
	
	
	@Test//计算奇数、偶数个数
	public void test1(){
		int[] score={0,0,1,2,3,5,4,5,2,8,7,6,9,5,4,8,3,1,0,2,4,8,7,9,5,2,1,2,3,9};
		int a = 0;
		int b = 0;
		for(int i = 0;i < score.length;i++){
			    if(score[i] % 2 == 0){	      //能被2取余就是偶数+1；
					a = a + 1;
				}else{                       //否则就是奇数+1；
					b = b + 1;
				}
		}
		System.out.println("偶数的位数为：" + a + "\t" + "奇数的位数为" + b );//全部循环完输出
	}
	
	
	
	
	//输入一组学生的成绩，使用数组，然后计算他们的平均值.
	@Test
	public void test2(){
		int sum = 0;
		int pingjun = 0;
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入学生人数");
		int ren = scanner.nextInt();
		int[]ch = new int[ren];
		for(int i = 0;i < ch.length;i++){
		System.out.println("请输入第"+ (i+1) +"个学生的成绩");
		ch[i] = scanner.nextInt();    
		sum = sum + ch[i];
	}
		pingjun = sum / ch.length;//最大的人数
		System.out.println("这"+ ch.length +"个同学的平均数：" + pingjun);
	} 
	
	
//	
//	5、 0.6332的数据类型是（double）                     //double
//	A float B double C Float D Double
//
//	6、 Java 中 main() 函数的返回值是什么 ?    //void
//	A 、 String
//	B 、 int
//	C 、 char
//	D 、 void
//
//
//	7 、如下哪个字串在Java 中可作为自定义标识符？   //$number
//	A 、 $number 
//	B 、 super
//	C 、 3number
//	D 、 #number
//
//	8 、下面的代码段中，执行之后 i  和 j  的值是什么 ? //i = 2;  
//	int i = 1;							   //j = 1;
//	int j;                                 //j = i++；+在后面先把1赋值给j，然后自加，
//	j = i++; 
//	A 、  1, 1
//	B 、 1, 2
//	C 、 2, 1
//	D 、 2, 2
//
//
//	9 、下面哪个赋值语句不是合法的？			//fioat a = 2.2;默认类型double
//	A 、 float a = 2.0
//	B 、 double b = 2.0
//	C 、 int c = 2
//	D 、 long d = 2
//
//
//
//
//	10 、下面哪个是 main() 函数的合法参数 ?   //String[] arg;
//	A 、 char args[]                   //arg 自己命名的名字（args）
//	B 、 char args[][]
//	C 、 String[] arg
//	D 、 String args
//
//
//	11 、已知表达式 int m[] = {0, 1, 2, 3, 4, 5, 6 };  // m.length-1
//	下面哪个表达式的值与数组最大下标数相等？                                       //m.length = 7,(1-7)
//	A 、  m.length()
//	B 、 m.length-1
//	C 、 m.length()+1
//	D 、 m.length+1  
//
//
//	12. 下面哪个语句不能定义一个字符变量（    ）                                         //char c2 = "s"
//	A、char c1=’a’;           B、char c2=” S ” ;
//	C、char c4=97 ;           D、char c3=’\u0041’;      //字符型单引号
//
//
//
//
//	13 在Java中，属于整数类型变量的是( )              //byte
//	A.single 　　　B.double
//	C.byte　　　  D.char　
//
//
//
//                                                  
//	14．下列语句哪一个正确（）                //b                        //编译 .class
//	A． Java程序经编译后会产生machine code
//	B． Java程序经编译后会产生byte code
//	C． Java程序经编译后会产生DLL
//	D．以上都不正确
//
//
//	15．执行如下程序代码                                     // -1
//	a=0;
//	c=0;
//	do{
//	--c;
//	a=a-1;
//	}while(a>0);
//	后，C的值是（）
//	A．0 B．1 C．-1 D．死循环
//	
	
	
	
	
//	一个5位数，判断它是不是回文数。即12321是回文数，个位与万位相同，十位与千位相同。
	/**万位：  i / 10000；
	 * 千位：（i %10000） / 1000；    
	 * 百位：（i % 1000）  / 100；
	 * 十位：（i %100）     / 10； 
	 * 个位：  i % 10；  
	 */
	
	@Test
	public void test3(){
		Scanner scanner = new Scanner (System.in);
		System.out.println("输入5个数");
		int huiwen = scanner .nextInt();
		if (((huiwen / 10000) == (huiwen % 10))&&(((huiwen % 10000) / 1000)//
				== ((huiwen % 100) / 10 ))) {
			System.out.println("回文");
		}else{
			System.out.println("不是回文");
		}
		}
	
//	一个5位数，判断它是不是回文数。即12321是回文数，个位与万位相同，十位与千位相同。//另一解法
	public void test10() {
		   String str = "12321";
		   char[] array = str.toCharArray();
		   boolean isHuiWen = true;					//初始认为就是回文
		   for (int i = 0; i < array.length / 2; i++) {
		     // i=0    array.length-1 
		     // i=1    array.length-2
		     if (array[i] != array[array.length - i -1]) {
		        isHuiWen = false;					//有一个不相等的就不是回文
		        break;
		     }
		   }
		   if (isHuiWen) {
		     System.out.println("是回文");
		   } else {
		     System.out.println("不是回文");
		   }

		}
	
	
	
	
	
	
//	输入一行字符，分别统计出其中英文字母、空格、数字和其它字符的个数。
	@Test													//1
	public void test4(){
		int zimu = 0;
		int shuzi = 0;
		int kongge = 0;
		int zifu = 0;
		char[] ch = new char[10];                   //定义数组，输入的字符不能小于10个[10]
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入10个字符");
	    String chuan = scanner.nextLine();          //可以输入空格
		for(int i = 0;i < ch.length;i++){           //i<数组的长度，即在0-9循环
			ch[i] = chuan.charAt(i);				//把字符串转换成数组
			if ((ch[i] >= 'a' && ch[i] <= 'z') ||(ch[i] >= 'A' && ch[i] <= 'Z')) {
				zimu = zimu + 1;
			}else if (ch[i] >= '0' && ch[i] <= '9') {
				shuzi = shuzi + 1;
			}else if (ch[i] == ' ') {
				kongge = kongge + 1;
			}else {
				zifu = zifu + 1;
			}
		}
		
		System.out.println("字母的个数为：" + zimu + "\t" + "数字的个数为" + 
		shuzi + "\t" + "空格的个数为：" + kongge + "\t" + "字符的个数为" + zifu);
	}
	
	
//	输入一行字符，分别统计出其中英文字母、空格、数字和其它字符的个数。
	
	@Test									//解法2，字符不限制
	public void test13(){
		int zimu = 0;
		int kongge = 0;
		int shuzi = 0;
		int zi = 0;
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一串字符");
		String chuan = scanner.nextLine();
		char[] ch = chuan.toCharArray();
		for (int i = 0; i < ch.length; i++) {
			if ((ch[i] >= 'a' && ch[i] <= 'z')|| (ch[i] >= 'A' && ch[i] <= 'Z')) {
				zimu = zimu +1;
			}
			else if (ch[i]  >= '0' && ch[i] <= '9') {
				shuzi = shuzi + 1;
			}
			else if (ch[i] == ' ') {
				kongge = kongge + 1;
			}else {
				zi = zi + 1;
			}
		}
		System.out.println("字母的个数为：" + zimu);
		System.out.println("数字的个数为：" + shuzi);
		System.out.println("空格的个数为：" + kongge);
		System.out.println("字符的个数为：" + zi);
	}
	
	
	
	
	
	
	
	
//	输入三个整数x,y,z，请把这三个数由小到大输出。
	/** //随机输入三个数x,y,z;
	 * 第一，对比x,y的值，如果x>y,则交换两个数，保证x取较小值；
	 * 第二，对比x,z的值，如果x>z，则交换两个数，保证x取较小值；
	 * 第三，对比y,z的值，如果y>z,则交换两个数，保证y取值次级小，x取值最小。
	 */
	
	@Test
	public void test5(){
		int[] ch = new int[3];
		int temp;    
		System.out.println("请输入3个数字：");
		for (int i = 1; i <= 3; i++) {
			System.out.println("请输入第" + i + "个数字" );
			Scanner scanner  = new Scanner(System.in);
			ch[i - 1] = scanner.nextInt();
		}
		for (int i = 0; i < ch.length; i++) {			//2   4    5    相互比较，符合条件就换位
			if (ch[0] > ch[1]) {                   
				temp  = ch[0];
				ch[0] = ch[1];
				ch[1] = temp;							 
				System.out.println();
			}
			if (ch[0] > ch[2]) {
				temp  = ch[0];
				ch[0] = ch[2];
				ch[2] = temp;
			}
			if (ch[1] > ch[2]) {
				temp  = ch[1];
				ch[1] = ch[2];
				ch[2] = temp;
			}
		}
		System.out.println("数字从小到大的顺序是:" + ch[0] + "\t" + ch[1] + "\t" + ch[2] + "\t");
	}

	
	
//	测试
	
//	1，下列代码
//	class A{
//	class AInner{}
//	}
//	class B{
//	static class BInner{}
//	}
//	public class C{
//	private class CInner{}
//	}
//	编译后生成几个.class文件？                //6个？？
//	A、3个
//	B、4个
//	C、5个
//	D、6个
//	2，下列代码C.java
//	public class Hello{
//		/**
//		 *  只是一个测试类
//		 *  /**
//		 *     您好，java
//		 *  **/ 								
//		 **/									//注释多余
//		 static public void main(String[] arg){
//			 System.out.println('您好，java');    //用""
//		 }
//	}
//	有几个错误的地方？                                      //2个
//	A、1个
//	B、2个
//	C、3个
//	D、4个
//
//	3，下列哪些是java的关键字（多选）                             //  程序控制  default、do
//	A、default							  //   基本类型  null
//	B、loop
//	C、do
//	D、Class(class是关键字，Class不是关键字是类)
//	E、null
//	F、java
//
//	4，下列哪些代码符合java规范：                                      
//	A、public static void main(){}         //A
//	B、public method(){
//	private Integer num;				
//	   }
//
//	C、public method(){
//	        int num;
//	System.out.println(num);
//	   }
//	D、private $5person=5;
//	
//	5，下列哪些变量的声明是正确的？（多选）                   //byet i = 128;    -128 ~ 127
//	A、byte i=128;						
//	B、int i = 0220;
//	C、boolean flag = Boolean.TRUE;
//	D、int number = 'A';
//	E、float y = 0x123;
//	F、long a = 0x123l;
//
//	6，下面代码的运行结果是：
//	public static void main(String[] args){
//	int i=1;							  
//	int j=++i;					//i = 2;j = 2;
//	if(j++>3){				   //j = 3;
//	++j;
//	}else{
//	i++;					 //i = 3;
//	}
//	int k=++j>4?j++:i++;	//j = 4; i = 4;
//	System.out.println(i);
//	}
//	A、2
//	B、3
//	C、4
//	D、运行时报错
//
//	8、下面的程序执行结果是：
//	public static void main(String[] args) {  //13
//	        int i = 0;  
//	        for (i++; i++ < 10; i++);         //运行顺序（1;3;2;）
//	        System.out.println(++i);  
//	}  
//	A、输出0
//	B、输出13
//	C、输出1
//	D、输出12
//
//	9，下面的程序输出
//	public static void main(String[] args){
//	for(int i=0;i<3;i++){                        //b   a    d
//	switch(i){
//	case 1:										 //初始化、0<3进入循环，然后i++
//	System.out.println("a");                     //i不满足条件跳出循环
//	break;
//	case 0:
//	System.out.println("b");
//	break;
//	default:
//	System.out.println("c");
//	case 2:
//	System.out.println("d");
//	}
//	}
//	}
//	请写出执行的结果
//
//	二，主观题（共5题，每题5分，共25分）
//	1，请简要写出搭建java开发环境的步骤
//	 	1、下载最新版本的jdk、安装
//	 	2、设置环境变量：计算机-属性-高级系统设置-环境变量
//		3、创建2个系统变量        JAVA_HOME :JDK路径       path： %JAVA_HOME%\bin、%JAVA_HOME%\jre\bin
//		4、在dos中输入java -version验证
//	2，为什么java能跨平台
//		Java在window、Mac、Linux不同的操作系统中建立了适合Java运行的虚拟机（JVM），
//	  	在这些系统中,虚拟机(JVM)屏蔽了操作系统的不同
//	三，编程题
//	1，打印下面图形（8分）
//	* * * * *
//		* * * *
//		* * *
//		* *
//		*
	@Test
	public void test6(){
		for (int k = 0; k < 1; k++) {					//先输出第一行
			for (int i = 0; i < 5; i++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = 1; i < 5; i++) {
			for (int j = 0; j < 2; j++) {
				System.out.print(" ");
			}
			for (int j = 0; j <= 4-i; j++) {
				System.out.print("*");
			}
			System.out.println();	
		}
	}
//	2，编写一个方法求s=a+aa+aaa+a...a，其中a是一个数，比如a=2；那么求s=2+22+222+2222...的值。
//	该方法需要两个参数，第一个参数控制a，第二个参数控制有多少个数。（5分）
	@Test
	public void test8(){
		
		
	}
//	3，给出一组学生的成绩int[] score={80,45,60,100,89,92,93,...}请求出这组成绩中，
//	100分，90-99，80-89的学生人数。（5分）
	@Test
	public void test7(){
		int[] ch = {80,45,60,100,89,92,93,57,78,48,98,99,89,100,87,98,100,89,97,100,95};
		int you   = 0;												//数组内核就是遍历
		int liang = 0;
		int man = 0;
		for (int i = 0; i < ch.length; i++) {
			switch (ch[i] / 10) {
			case 10:
				man = man + 1;
				break;
			case 9:
				you = you + 1;
				break;
			case 8:
				liang = liang + 1;
			default:
				break;
			}
		}
		System.out.println("100分的人数为："+ man + "\t" + "90-99分数的人数为：" + you + "\t" + "80-89分数的人数为：" + liang);
	}
	
	
	
	@Test
	public void test20() {
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (j == 3) {
					break;
				}
				System.out.print(j + " ");
			}
			System.out.println();
			System.out.println(i + " ");
		}
	}
	}

